package br.net.atasacramental.usuario.dao;
import br.net.atasacramental.usuario.model.Usuario;
import br.net.atasacramental.util.ConexaoDB;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author alexandre.araujo
 */
public class UsuarioDAO{
	private String[][] ordemP = {{"idUsuario", "desc"}};
    @SuppressWarnings("unchecked")
	public List<Usuario> get() {
    	return (List<Usuario>) ConexaoDB.get(Usuario.class,true,1,100,null,ordemP);
    }
    
    public Usuario getByIdUsuario(int idUsuario) {
    	return (Usuario) ConexaoDB.getById(Usuario.class,idUsuario);
    }
    
    @SuppressWarnings("unchecked")
	public List<Usuario> getByNome(String nome) {
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("nome", nome);
        return (List<Usuario>) ConexaoDB.get(Usuario.class,true,1,100,params,ordemP);
    }
    public Usuario getByLogin(String email) {
    	Usuario users = this.getByEmail(email);
    	if(users!=null){
    		ConexaoDB.removeFromSession(users);
    		users.setSenha("hsuqh_4839_23223#@@");
    	}
        return users;
    }
    @SuppressWarnings("unchecked")
    public Usuario getByEmail(String email) {
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("email", email.toLowerCase());
     	params.put("snAtivo","S");     	
     	List<Usuario> luser = (List<Usuario>) ConexaoDB.get(Usuario.class,true,1,1,params,ordemP);
        if(luser.size()>0){
        	return luser.get(0);
        }
     	return null; 
    }
    @SuppressWarnings("unchecked")
    public List<Usuario> getBySenha(String senha) {
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("senha", senha);
        return (List<Usuario>) ConexaoDB.get(Usuario.class,true,1,100,params,ordemP);
    }
    @SuppressWarnings("unchecked")
    public List<Usuario> getByIdOrganizacao(int idOrganizacao) {
     	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("idOrganizacao", idOrganizacao);
        return (List<Usuario>) ConexaoDB.get(Usuario.class,true,1,100,params,ordemP);
    }
    
    public boolean insert(Usuario u){
        return ConexaoDB.insert(u);
    }
    public boolean update(Usuario u){
        return ConexaoDB.update(u);
    }
    public boolean delete(Usuario u){
        return ConexaoDB.delete(u);
    }
}